package leetcode_acm.array;

/**
 * 功能描述
 *
 * @author: 张庭杰
 * @date: 2023年03月20日 20:45
 */
public class TotalFruit {
    public int totalFruit(int[] fruits) {
        int k = 2;
        int[] windows = new int[10000+5];
        int left = 0,right = 0;
        int n = fruits.length;
        int valid = 0;
        int ans = -1;
        while(right < n){
            //窗口向右扩张
            int add = fruits[right++];
            windows[add]++;
            if(windows[add] == 1){
                valid++;
            }
            while (valid > k){
                int minus = fruits[left++];
                if(windows[minus] == 1){
                    valid--;
                }
                windows[minus]--;
            }
            //此时为合法的水果数
            ans = Math.max(ans,right-left);
        }
        return ans;
    }
}
